<?php
namespace Home\Service;
use Org\Util\Curl;
use Think\Crypt\Driver\Base64;
// +----------------------------------------------------------------------
// | Date:2016年12月14日
// +----------------------------------------------------------------------
// | Author: EK_熊<1439527494@qq.com>
// +----------------------------------------------------------------------
// | Description: 此文件作用于****
// +----------------------------------------------------------------------
class AccountService extends \Think\Controller{
    
    protected $code = '5861dc73aea2e';
    protected $base_url = "";
    protected $errmsg = '';
    protected $cookie_key='user';
    protected $cookie_expire=15552000;//默认半年
    protected $session_key='user';
    
    public function __construct(){
        $this->base_url = "http://account.intech.gdinsight.com/index.php?g=Home&m=Api&code=$this->code&a=";
//         $this->base_url = "http://localhost/insight_account2016/index.php?g=Home&m=Api&code=$this->code&a=";
    }
    
    
    /**
     * 登录
     * @param unknown $email    用户邮箱
     * @param unknown $password 密码
     * @param string $remember
     * date:2017年1月12日
     * author: EK_熊
     */
    public function login($email,$password,$remember=true){
        $account = trim($email);
        $password = trim($password);
        
        if (empty($account)) {
            $this->errmsg = '请输入账户名';
            return false;
        }
        if (empty($password)) {
            $this->errmsg = '请输入密码';
            return false;
        }
        $userInfo = $this->_request('login_email',['account'=>$account,'password'=>$password]);
        if (!$userInfo)  return false;
        
        //获取到用户数据，记录session
        session($this->session_key,$userInfo);
        //是否开启浏览自动记住用户信息
        if ($remember) {
            cookie($this->cookie_key,$userInfo,array('expire'=>$this->cookie_expire));
        }
        return true;
    }
    
            
    
    /**
     * 传入数据集合，集合包含字段uid,先提取uid，发送请求获取用户数据，再循环赋值返回数据源
     * @param array $data
     * @param array $fields  需要赋值的用户信息字段
     * date:2017年1月4日
     * author: EK_熊
     */
    public function append_user_field($data=[],$fields=''){
        
        
        /* 提取uid集合 */
        $uidBox = [];
        foreach ($data as $k=>$v) {
            $uidBox[] = $v['uid'];
        }
        $uidBox = array_unique($uidBox);
        $request = $this->get_user_batch('ep_id',implode(',',$uidBox),$fields);
        foreach ($data as $k=>$v){
            $data[$k]['userInfo'] = $request[$v['uid']];
        }
        return $data;
    }
    
    /**
     * 批量获取用户数据
     * @param string $key     '线索查找字段'
     * @param string $value   '查找值'
     * @param string $fields  '结果目标字段'
     * @return boolean
     * date:2017年3月6日
     * author: EK_熊
     */
    public function get_user_batch($key='',$value='',$fields=''){
        $request = $this->_request('get_user_batch',['key'=>$key,'val'=>$value,'field'=>$fields]);
        if ($request['errcode'] !==0) return false;
    
        return $request['userInfo'];
    }
        
    
    /**
     * 更新用户个人信息
     * @param unknown $uid      用户id
     * @param string $nickname  昵称
     * @param string $avatar    base64字符串
     * date:2017年1月12日
     * author: EK_熊
     */
    public function update_user($uid,$userinfo=[]){
        $request = $this->_request('update_user',['uid'=>$uid,'userdata'=>urlencode(json_encode($userinfo))]);
        if ($request){
            $userInfo = $request['userInfo'];
            if (cookie($this->cookie_key)) cookie($this->cookie_key,$userInfo,array('expire'=>$this->cookie_expire));
            session($this->session_key,$userInfo);
        }
        return $userInfo;
    }
    
    
    /**
     * 从内部登录访问系统获取对应的用户数据
     * @param unknown $actionname
     * @param unknown $field
     * date:2016年12月28日
     * author: EK_熊
     */
    public function _request($actionname,$fields=[]){
        $apiUrl = $this->base_url.$actionname;
        $curl = new Curl();
        $result = $curl->post($apiUrl, $fields);
        if (!$result) return '接口请求错误！';
        $resultAry =  json_decode($result,true);
        if ($resultAry['errcode'] !== 0) {
            $this->errmsg = $resultAry['info'];
            return false;
        }
        return $resultAry;
    }
    
    /**
     * 获取错误信息
     * @return string|unknown
     * date:2017年1月12日
     * author: EK_熊
     */
    public function getError(){
        return $this->errmsg;
    }
    
}